package org.huawei260.OD260;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/8/22-2:12
 * @Description:
 *删除字符串中出现次数最少的字符
 *如果多个字符出现次数一样则都删除
 *
 * 这道题太基础，训练基本功
 * 我的思路：
 * 1.统计每个字符出现的次数
 * 用一个map来统计每个字符出现的次数
 * HashMap<Character, Integer> map = new HashMap<>();
 * map.put(c, map.getOrDefault(c, 0) + 1);
 * 2.找出出现次数最少的字符的数量
 * map.values() 最小的值对应的map是哪个
 * int min = Math.MAX_VALUE;
 * for (int count : charCountMap.values()) {
 * if (count < minCount) {
 * min = count;
 }
 *1[可能遇到多个字符，用set装]
 * 3.删除出现次数最少的字符
 * Stringbuilder sb = new Stringbuilder();
 * for(map.Entry<Character, Integer> entry : map.entrySet()) {
 * if (map.entrySet() != min) {
 * sb.append(entry);
 }
 *
 *
 * 重新进行拼接
 *
 * 4.返回删除后的字符串
 * return sb.toString() == "" ? "empty" : sb.toString();
 *
 *
 * @version: 1.0
 */
public class O0017_删除最少字符_answer_values_toArray {
			public static void main(String[] args) {
				// 创建一个Map并添加一些键值对
				HashMap<Character, Long> map = new HashMap<>();
				map.put('a', 1L);
				map.put('b', 2L);
				map.put('c', 3L);
				map.put('c', 31L);

				// 将Map的值转换为Long数组

				// 1.获取Map的值集合：使用map.values()方法获取Map中所有值的集合视图。
				// 2.转换为数组：调用Collection的toArray()方法，将值集合转换为数组。
				// 3.传递给toArray(T[] a)方法的数组new Long[0]只是一个具有正确类型的空数组，用于指示期望的返回类型。
				// 如果这个数组比Collection中的元素数量小，toArray()方法会自动创建一个足够大的新数组。
				Long[] counts = map.values().toArray(new Long[0]);

				// 打印数组内容
				for (Long count : counts) {
					System.out.println(count);
				}
			}
		}